#pragma once
#include<iostream>
#include<string>
#include<fstream>
#include<boost/algorithm/string.hpp>
#include"cppjieba/Jieba.hpp"
namespace Util
{
class FileUtil
{
public:
    static bool ReadFile(const std::string& file_path,std::string* out)
    {
        std::ifstream in(file_path,std::ios::in);
        if(!in.is_open())
        {
            std::cout << "file:" << file_path << "open error!" << std::endl;
            return false;
        }
        std::string _line;
        while(std::getline(in,_line))
        {
            *out += _line;
        }

        in.close();

        return true;
    }

};

class StringUtil
{
public:
    static void Split(const std::string& _line,std::vector<std::string>* _results,const std::string& sep)
    {
        boost::split(*_results,_line,boost::is_any_of(sep),boost::token_compress_on);
    }
};


const char* const DICT_PATH = "./dict/jieba.dict.utf8";
const char* const HMM_PATH = "./dict/hmm_model.utf8";
const char* const USER_DICT_PATH = "./dict/user.dict.utf8";
const char* const IDF_PATH = "./dict/idf.utf8";
const char* const STOP_WORD_PATH = "./dict/stop_words.utf8";

class JiebaUtil
{
private:
    static cppjieba::Jieba _jieba;
public:
    static void CutString(const std::string& _src,std::vector<std::string>* _ret)
    {
        _jieba.CutForSearch(_src,*_ret);
    }
};

cppjieba::Jieba JiebaUtil::_jieba(DICT_PATH,HMM_PATH, USER_DICT_PATH,IDF_PATH,STOP_WORD_PATH);
        




}